1.3-docker 私有仓库
Create by fall on 09 May 2023
Recently revised in 18 Jul 2023
私有仓库
搭建私有仓库
Docker Registry 是一个无状态,高度可扩展的服务器端应用程序,它存储并允许您分发 Docker 映像;我们通过 run 命令启动
docker run -d -p 5000:5000 -v $PWD:/var/lib/registry --restart=always --name registry registry:2
Registry 服务默认将上传的镜像保存在容器的/var/lib/registry
,我们可以将服务器本地的文件夹挂载到该目录,即可实现保存镜像;通过以下 curl 我们可以查看服务器是否启动,以及服务器上的镜像。
curl http://192.168.0.1:5000/v2/_catalog
# 返回数据:{"repositories":[]}
服务器推送镜像到仓库默认使用的是 https,但是我们在企业内部使用,这里就不加 https;需要在客户端配置可信的仓库地址:
- linux 的配置文件地址为:
/etc/docker/daemon.json
- windows 在 docker 应用中添加下面的内容即可
{
// ... 其它配置
"insecure-registries":[
"192.168.0.1:500" // 对应的地址
]
}
向仓库内推送镜像
# 打上标签
docker tag ubuntu:18.04 192.168.0.1:5000/my-ubuntu:latest
# 推送镜像
docker push 192.168.0.1:5000/my-ubuntu:latest
确认镜像存在
curl http://192.168.0.1:5000/v2/_catalog
# 返回数据:{"repositories":["my-ubuntu"]}
需要认证的仓库
将原有容器删除,创建一个保存账号密码的文件:
mkdir -p ~/auth && cd ~/auth
docker run --rm --entrypoint htpasswd httpd:alpine -Bbn username password > ./htpasswd
$ docker run -d -p 5000:5000
-v $PWD:/var/lib/registry \
-v ~/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
--restart always --name registry registry:2
此时再拉去和推送会提示 no basic auth credentials
,我们需要先进行登录操作:
# 登录
$ docker login 192.168.0.1:5000
# 退出登录
$ docker logout 192.168.0.1:5000
# windows客户端运行添加winpty
$ winpty docker login 192.168.0.1:5000